
[dbo].[amsp_GetTableColumnList]
CREATE PROCEDURE amsp_GetTableColumnList
@InTableName sysname,
@OutColumnList nvarchar(4000) OUTPUT,
@InIncludeKeys char(1) = 'N',
@SkipColumnName1 sysname = '',
@SkipColumnName2 sysname = '',
@SkipColumnName3 sysname = '',
@SkipColumnName4 sysname = '',
@SkipColumnName5 sysname = '' AS
DECLARE GetColumns CURSOR LOCAL READ_ONLY FOR
SELECT b.name, (
SELECT 1
FROM sysindexes c, sysindexkeys d
WHERE b.id = c.id
AND c.id = d.id
AND c.status & 2048 = 2048
AND c.indid = d.indid
AND b.colid = d.colid) AS PK
FROM sysobjects a, syscolumns b
WHERE a.id = b.id
AND a.name = @InTableName
ORDER BY b.colorder
BEGIN
DECLARE
@ColumnName sysname,
@ColumnStatus int
SET @OutColumnList = ''
OPEN GetColumns
FETCH NEXT FROM GetColumns
INTO @ColumnName, @ColumnStatus
WHILE @@FETCH_STATUS = 0
BEGIN
IF (@ColumnStatus IS NULL OR @ColumnStatus <> 1 OR
(@ColumnStatus = 1 AND @InIncludeKeys = 'Y')) AND
@ColumnName NOT IN (@SkipColumnName1, @SkipColumnName2, @SkipColumnName3, @SkipColumnName4, @SkipColumnName5)
SET @OutColumnList = @OutColumnList + @ColumnName + ','
FETCH NEXT FROM GetColumns
INTO @ColumnName, @ColumnStatus
END
CLOSE GetColumns
DEALLOCATE GetColumns
SET @OutColumnList = Left(@OutColumnList,Len(@OutColumnList) - 1)
END
GO
GRANT EXECUTE ON [dbo].[amsp_GetTableColumnList] TO [IMIS]
GO